package net.bingosoft.common.data;



/**
 * 2008-1-15 下午03:39:04
 * Author:yangdongyu(yangdy@bingosoft.net)
 * ReadMe:分页对象
 * ChangeLog:
 */
public class Pager {
	
	public	Pager(){};
	/**
	 * 分页对象的构造函数
	 * @param pageSize 每页记录数
	 * @param page 页码
	 */
	public Pager(int pageSize,int page){
		this.page = page;
		this.pageSize = pageSize;
	}
	/**
	 * 页大小
	 */
	private int pageSize;
	/**
	 * 当前页码
	 */
	private int page;
	/**
	 * 总行数
	 */
	private int totalRows;

	/**
	 * 总页数
	 */
	private int totalPages;
	/**
	 * 获取总页数
	 * @return
	 */
	public int getTotalPages() {
		return totalPages;
	}
	/**
	 * 获取每页记录数
	 * @return
	 */
	public int getPageSize() {
		return pageSize;
	}
	/**
	 * 设置页大小
	 * @param pageSize
	 */
	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public int getTotalRows() {
		return totalRows;
	}

	void setTotalRows(int totalRows) {
		this.totalRows = totalRows;
		this.totalPages = (this.totalRows + this.pageSize - 1 )/this.pageSize;
	}

	public int getCurrentRowsDisplayed() {
		return pageSize;
	}
	/**
	 * 获取页码
	 * @return
	 */
	public int getPage() {
		return page;
	}
	/**
	 * 获取结束行
	 * @return
	 */
	public int getRowEnd() {
		int endRow = pageSize * page;
		if(endRow > totalRows || endRow < 0) endRow = totalRows;
		return endRow; 
	}
	
	/**
	 * 获取开始行
	 * @return
	 */
	public int getRowStart() {
		int rowStart = (page-1) * pageSize;
		if(rowStart > this.totalRows) rowStart = totalRows;
		return rowStart < 0 ? 0 : rowStart;
	}
	/**
	 * 设置页码
	 * @param page
	 */
	public void setPage(int page) {
		this.page = page;
	}
	/**
	 * 设置行属性
	 * @param totalRows 总行数
	 * @param pageSize 页大小
	 */
	public void setRowAttributes(int totalRows, int pageSize) {
		setTotalRows(totalRows);
		this.pageSize = pageSize;
	}

}
